/**
 * 支付相关的业务,比如充值,订单支付
 */
import {
  payto
} from "api/common/pay";
import {
  Toast
} from 'vant';


//H5浏览器支付
const H5Pay = {

  /**
   * 商品订单支付
   * @param {*} subNumber
   */
  orderPay(subNumber) {
    this.pay("USER_ORDER", subNumber);
  },

  /**
   * 通用支付
   * @param {*} subSettlementType 结算类型
   * @param {*} subNumber 订单号
   */
  pay(subSettlementType, subNumber) {
    let params = {
      subSettlementType: subSettlementType,
      subNumber: subNumber
    };

    const toast = Toast.loading({
      duration: 0,
      forbidClick: true,
      message: '正在发起支付'
    });

    return new Promise((resolve, reject) => {
      payto(params).then(res => {
        if (res.success) {
          toast.clear()
          window.location.assign(res.result)
          // 以前是后端返回 html里面包含一个表单自提交， 所以使用document.write， 现在是直接返回一个URL， 所以下面这段代码注释掉
          // document.write(res.result);
          resolve(res);
        } else {
          Toast.fail({
            duration: 2000,
            message: res.msg
          });
          reject(res);
        }
      }).catch(e => {
        console.error(e);
        Toast.fail("支付失败，请稍后重试或联系商家客服！");
        reject(e);
      });
    });
  }
};

export default H5Pay;
